package com.cskaoyan.javase.oop2._1extends._10final._3variable._4exercise;

/**
 *
 * @since 17:43
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        byte num1 = 0;
        byte num2 = 0;
        final byte num3 = 10;
        final byte num4 = 20;
        byte result;
        // 下列代码哪行能通过编译，哪行不能？
        // byte + byte = int
        /*
            表达式的类型提升:
                当表达式中存在byte,short,char之间的变量参与运算
                那么最终的结果直接提升到int
         */
        result = (byte) (num1 + num2);
        /*
            整数常量的特殊性:
                对于整数常量和它们的运算而言,
                如果结果处在某个整型类型之中
                那么就可以直接赋值
         */
        // 相当于 result = 10 + 20;
        result = num3 + num4;

        final byte num5 = 120;
        final byte num6 = 20;
        // Incompatible types. Found: 'int', required: 'byte'
        int num = num5 + num6;

        // 只要表达式中存在任意变量,那么就遵循表达式类型提升,byte变量只要参与运算,结果一定是int
        result = (byte) (num1 + num3);
    }
}
